/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package clases;

import java.io.Serializable;
import javax.ejb.EJB;
import entidades.ConvenioXPeriodoXEstudiante;
import controladores.ConvenioXPeriodoXEstudianteFacadeLocal;
import entidades.EvaluacionFinalLogros;
import java.io.IOException;
import negocio.EvaluacionFinalLogrosInterface;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
/**
 *
 * @author Guillermo
 */
@ManagedBean
@ViewScoped
public class ListaEvalFinalLogrosBean implements Serializable{
    @EJB
    private ConvenioXPeriodoXEstudianteFacadeLocal convenioXPeriodoXEstudianteFacadeLocal;
    private List<ConvenioXPeriodoXEstudiante> convenioXPeriodoXEstudiante;
    private String ESTADO_PERIODO="ACT";
    private ConvenioXPeriodoXEstudiante estudianteSelected;
    @ManagedProperty(value="#{sessionBean}")
    private SessionBean sessionBean;
    private int idSupervisor;
    private int idCoordinador;
    private int idPracticante;
    private int idSupervisorEntidad;
    private final int ROL_COORDINADOR = 2;
    private final int ROL_SUPERVISOR = 3;
    private final int ROL_SUPERVISOR_ENTIDAD = 4;
    private final int ROL_PRACTICANTE = 5;
    private EvaluacionFinalLogros selectedEvaluacionFinalLogros;
    private List<EvaluacionFinalLogros> evaluacionFinalLogros;
    @EJB
    private EvaluacionFinalLogrosInterface evaluacionFinalLogrosInterface;
    private boolean disabledListaPracticante;
    private boolean disabledListaSupervisorUni;
    private boolean visibleEdicionFormato;
  
    public ListaEvalFinalLogrosBean(){
    }

   @PostConstruct
    public void init(){
        switch (sessionBean.getUsuarioSession().getIdRol().getIdRol()) {
            case ROL_COORDINADOR:
                idCoordinador = sessionBean.getUsuarioSession().getIdUsuario();
                convenioXPeriodoXEstudiante = convenioXPeriodoXEstudianteFacadeLocal.listarEstudiantesXPeriodo(ESTADO_PERIODO);
                disabledListaPracticante = true;
                disabledListaSupervisorUni = true;
                visibleEdicionFormato = false;
                break;
            case ROL_SUPERVISOR:
                idSupervisor = sessionBean.getUsuarioSession().getIdUsuario();
                convenioXPeriodoXEstudiante= convenioXPeriodoXEstudianteFacadeLocal.listarEstudiantesXSupervisor(idSupervisor, ESTADO_PERIODO);
                disabledListaPracticante = true;
                disabledListaSupervisorUni = false;
                visibleEdicionFormato = true;
                break;
            case ROL_PRACTICANTE:
                idPracticante = sessionBean.getUsuarioSession().getIdUsuario();
                convenioXPeriodoXEstudiante = convenioXPeriodoXEstudianteFacadeLocal.consultarEstudiante(idPracticante, ESTADO_PERIODO);
                disabledListaPracticante = false;
                disabledListaSupervisorUni = true;
                visibleEdicionFormato = false;
                break;
//           case ROL_SUPERVISOR_ENTIDAD:
//                idSupervisorEntidad = sessionBean.getUsuarioSession().getIdUsuario();
//                convenioXPeriodoXEstudiante = convenioXPeriodoXEstudianteFacadeLocal.consultarEstudianteXSupervisorEntidad(idSupervisorEntidad, ESTADO_PERIODO);
//                disabledListaPracticante = true;
//                disabledListaSupervisorUni = true;
//                disabledListaSupervisorEntidad = true;
//                visibleEdicionFormato = false;
//                break;
        }
    }
    
    public void listarEvalFinalLogros(ActionEvent actionEvent){
            evaluacionFinalLogros = (List<EvaluacionFinalLogros>) convenioXPeriodoXEstudianteFacadeLocal.consultarConvenioXPeriodoXEstudiante(estudianteSelected.getEstudiante().getIdEstudiante(), ESTADO_PERIODO).getEvaluacionFinalLogrosList();
        }
    
     public void permitirEdicionEvaluacionFinalLogros(EvaluacionFinalLogros evaluacionFinalLogros) {
        editarEvaluacionFinalLogros(evaluacionFinalLogros);
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Exitoso", "Se ha permitido la edición de este formato."));
    }

    public void aprobarFormato(EvaluacionFinalLogros evaluacionFinalLogros) {
        editarEvaluacionFinalLogros(evaluacionFinalLogros);
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Exitoso", "Se ha modificado la aprobación del formato."));
    }

    private void editarEvaluacionFinalLogros(EvaluacionFinalLogros evaluacionFinalLogros) {
        try {
            evaluacionFinalLogrosInterface.permitirEdicionEvaluacionFinalLogros(evaluacionFinalLogros);
        } catch (Exception e) {
            FacesMessage facesMessage = new FacesMessage("Error");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
            e.printStackTrace();
        }
    }
    
    public List<ConvenioXPeriodoXEstudiante> getConvenioXPeriodoXEstudiante() {
        return convenioXPeriodoXEstudiante;
    } 

    public void setConvenioXPeriodoXEstudiante(List<ConvenioXPeriodoXEstudiante> convenioXPeriodoXEstudiante) {
        this.convenioXPeriodoXEstudiante = convenioXPeriodoXEstudiante;
    }

    public SessionBean getSessionBean() {
        return sessionBean;
    }

    public void setSessionBean(SessionBean sessionBean) {
        this.sessionBean = sessionBean;
    }

    public List<EvaluacionFinalLogros> getEvaluacionFinalLogros() {
        return evaluacionFinalLogros;
    }

    public void setEvaluacionFinalLogros(List<EvaluacionFinalLogros> evaluacionFinalLogros) {
        this.evaluacionFinalLogros = evaluacionFinalLogros;
    }

    public EvaluacionFinalLogrosInterface getEvaluacionFinalLogrosInterface() {
        return evaluacionFinalLogrosInterface;
    }

    public void setEvaluacionFinalLogrosInterface(EvaluacionFinalLogrosInterface evaluacionFinalLogrosInterface) {
        this.evaluacionFinalLogrosInterface = evaluacionFinalLogrosInterface;
    }

    public ConvenioXPeriodoXEstudiante getEstudianteSelected() {
        return estudianteSelected;
    }

    public void setEstudianteSelected(ConvenioXPeriodoXEstudiante estudianteSelected) {
        this.estudianteSelected = estudianteSelected;
    }

    public boolean isDisabledListaPracticante() {
        return disabledListaPracticante;
    }

    public void setDisabledListaPracticante(boolean disabledListaPracticante) {
        this.disabledListaPracticante = disabledListaPracticante;
    }

    public boolean isDisabledListaSupervisorUni() {
        return disabledListaSupervisorUni;
    }

    public void setDisabledListaSupervisorUni(boolean disabledListaSupervisorUni) {
        this.disabledListaSupervisorUni = disabledListaSupervisorUni;
    }

    public boolean isVisibleEdicionFormato() {
        return visibleEdicionFormato;
    }

    public void setVisibleEdicionFormato(boolean visibleEdicionFormato) {
        this.visibleEdicionFormato = visibleEdicionFormato;
    }

    public EvaluacionFinalLogros getSelectedEvaluacionFinalLogros() {
        return selectedEvaluacionFinalLogros;
    }

    public void setSelectedEvaluacionFinalLogros(EvaluacionFinalLogros selectedEvaluacionFinalLogros) {
        this.selectedEvaluacionFinalLogros = selectedEvaluacionFinalLogros;
    }
    
    public void irFormularioEvaluacionFinalLogros(EvaluacionFinalLogros selectedEvaluacionFinalLogros ) {
        try {
            ExternalContext ctx = FacesContext.getCurrentInstance().getExternalContext();
            ctx.redirect("EvaluacionFinalLogros.xhtml?evaluacionFinalLogros=" + selectedEvaluacionFinalLogros.getIdEvaluacionFinalLogros() + "&&accionEvaluacionFinalLogros=Consultar");
            
        } catch (IOException ex) {
            Logger.getLogger(ListaEvalFinalLogrosBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
}
